<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.12"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Os1: ORB_SLAM2::Viewer Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Os1
   &#160;<span id="projectnumber">1</span>
   </div>
   <div id="projectbrief">OrbSlam2 documentado y modificado</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.12 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,'Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('class_o_r_b___s_l_a_m2_1_1_viewer.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="class_o_r_b___s_l_a_m2_1_1_viewer-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">ORB_SLAM2::Viewer Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html" title="Viewer representa la interfaz de usuario. ">Viewer</a> representa la interfaz de usuario.  
 <a href="class_o_r_b___s_l_a_m2_1_1_viewer.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="_viewer_8h_source.html">Viewer.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for ORB_SLAM2::Viewer:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="class_o_r_b___s_l_a_m2_1_1_viewer__coll__graph.svg" width="2848" height="1242"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a51c55a1f1ad05a6ba2c6b57f9133f88d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a51c55a1f1ad05a6ba2c6b57f9133f88d">isFinished</a> ()</td></tr>
<tr class="memdesc:a51c55a1f1ad05a6ba2c6b57f9133f88d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Informa si <a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html" title="Viewer representa la interfaz de usuario. ">Viewer</a> ha terminado, paso previo para cerrar la aplicación.  <a href="#a51c55a1f1ad05a6ba2c6b57f9133f88d">More...</a><br /></td></tr>
<tr class="separator:a51c55a1f1ad05a6ba2c6b57f9133f88d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1888ef340152348f395a814ddfb362f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#aa1888ef340152348f395a814ddfb362f">isStopped</a> ()</td></tr>
<tr class="memdesc:aa1888ef340152348f395a814ddfb362f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Devuelve true si <a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html" title="Viewer representa la interfaz de usuario. ">Viewer</a> está pausado.  <a href="#aa1888ef340152348f395a814ddfb362f">More...</a><br /></td></tr>
<tr class="separator:aa1888ef340152348f395a814ddfb362f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b0eeffd84b5d94a4c4f4e0db174c9fe"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a2b0eeffd84b5d94a4c4f4e0db174c9fe">Release</a> ()</td></tr>
<tr class="memdesc:a2b0eeffd84b5d94a4c4f4e0db174c9fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Solicita salir de una pausa y resumir la operación.  <a href="#a2b0eeffd84b5d94a4c4f4e0db174c9fe">More...</a><br /></td></tr>
<tr class="separator:a2b0eeffd84b5d94a4c4f4e0db174c9fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9079c4e563099cf3c8cda403c854cf8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#af9079c4e563099cf3c8cda403c854cf8">RequestFinish</a> ()</td></tr>
<tr class="memdesc:af9079c4e563099cf3c8cda403c854cf8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Solicita terminar para cerrar la aplicación.  <a href="#af9079c4e563099cf3c8cda403c854cf8">More...</a><br /></td></tr>
<tr class="separator:af9079c4e563099cf3c8cda403c854cf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b23bbdcc2c5898d074870785a3e07c5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a4b23bbdcc2c5898d074870785a3e07c5">RequestStop</a> ()</td></tr>
<tr class="memdesc:a4b23bbdcc2c5898d074870785a3e07c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Solicita pausar.  <a href="#a4b23bbdcc2c5898d074870785a3e07c5">More...</a><br /></td></tr>
<tr class="separator:a4b23bbdcc2c5898d074870785a3e07c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68c269890714298034997be622f09947"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a68c269890714298034997be622f09947">Run</a> ()</td></tr>
<tr class="memdesc:a68c269890714298034997be622f09947"><td class="mdescLeft">&#160;</td><td class="mdescRight">Método principal de <a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html" title="Viewer representa la interfaz de usuario. ">Viewer</a>, que se ejecuta en un hilo propio.  <a href="#a68c269890714298034997be622f09947">More...</a><br /></td></tr>
<tr class="separator:a68c269890714298034997be622f09947"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4cb74123010b48fe47265e7b371229a5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a4cb74123010b48fe47265e7b371229a5">Viewer</a> (<a class="el" href="class_o_r_b___s_l_a_m2_1_1_system.html">System</a> *pSystem, <a class="el" href="class_o_r_b___s_l_a_m2_1_1_frame_drawer.html">FrameDrawer</a> *pFrameDrawer, <a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_drawer.html">MapDrawer</a> *pMapDrawer, <a class="el" href="class_o_r_b___s_l_a_m2_1_1_tracking.html">Tracking</a> *pTracking, const std::string &amp;strSettingPath, cv::VideoCapture *=NULL)</td></tr>
<tr class="memdesc:a4cb74123010b48fe47265e7b371229a5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor único del singleton <a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html" title="Viewer representa la interfaz de usuario. ">Viewer</a>.  <a href="#a4cb74123010b48fe47265e7b371229a5">More...</a><br /></td></tr>
<tr class="separator:a4cb74123010b48fe47265e7b371229a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a4f6ee522d15ea19986f1625007ef08cb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a4f6ee522d15ea19986f1625007ef08cb">cargarMapa</a> = false</td></tr>
<tr class="memdesc:a4f6ee522d15ea19986f1625007ef08cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Señal para que main cargue en mapa en el thread de <a class="el" href="class_o_r_b___s_l_a_m2_1_1_system.html" title="System se instancia una única vez en main, en la variable SLAM. ">System</a> y <a class="el" href="class_o_r_b___s_l_a_m2_1_1_tracking.html" title="Objeto único que se ejecuta en su propio Trhead, y se inicia con Run(). ">Tracking</a>.  <a href="#a4f6ee522d15ea19986f1625007ef08cb">More...</a><br /></td></tr>
<tr class="separator:a4f6ee522d15ea19986f1625007ef08cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17167841bf5fbad4c9dad01fe4f5bc9b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a17167841bf5fbad4c9dad01fe4f5bc9b">duracion</a></td></tr>
<tr class="memdesc:a17167841bf5fbad4c9dad01fe4f5bc9b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Duración del archivo de video de entrada, expresado en cuadros.  <a href="#a17167841bf5fbad4c9dad01fe4f5bc9b">More...</a><br /></td></tr>
<tr class="separator:a17167841bf5fbad4c9dad01fe4f5bc9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab26f78e86d98cab4eb5af208bda89435"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#ab26f78e86d98cab4eb5af208bda89435">guardarMapa</a> = false</td></tr>
<tr class="memdesc:ab26f78e86d98cab4eb5af208bda89435"><td class="mdescLeft">&#160;</td><td class="mdescRight">Señal para que main guarde el mapa en el thread de <a class="el" href="class_o_r_b___s_l_a_m2_1_1_system.html" title="System se instancia una única vez en main, en la variable SLAM. ">System</a> y <a class="el" href="class_o_r_b___s_l_a_m2_1_1_tracking.html" title="Objeto único que se ejecuta en su propio Trhead, y se inicia con Run(). ">Tracking</a>.  <a href="#ab26f78e86d98cab4eb5af208bda89435">More...</a><br /></td></tr>
<tr class="separator:ab26f78e86d98cab4eb5af208bda89435"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73f09c3764dd6d9151ce2134a7c07180"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a73f09c3764dd6d9151ce2134a7c07180">modoAutomatico</a> = false</td></tr>
<tr class="memdesc:a73f09c3764dd6d9151ce2134a7c07180"><td class="mdescLeft">&#160;</td><td class="mdescRight">Modo automatico que pasa a resversa cuando se pierde.  <a href="#a73f09c3764dd6d9151ce2134a7c07180">More...</a><br /></td></tr>
<tr class="separator:a73f09c3764dd6d9151ce2134a7c07180"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11a0333b735379526a324a76d5e6fbc4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a11a0333b735379526a324a76d5e6fbc4">mostrarEntradaAntidistorsionada</a> = true</td></tr>
<tr class="memdesc:a11a0333b735379526a324a76d5e6fbc4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Señal que alterna mostrando la imagen de entrada como viene o antidistorsionada.  <a href="#a11a0333b735379526a324a76d5e6fbc4">More...</a><br /></td></tr>
<tr class="separator:a11a0333b735379526a324a76d5e6fbc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6826e72c72575535c0d01fd552c29ac6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a6826e72c72575535c0d01fd552c29ac6">sentidoModoAutomatico</a> = false</td></tr>
<tr class="memdesc:a6826e72c72575535c0d01fd552c29ac6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Variable interna que indica el sentido del video cuando actúa la corrección automática.  <a href="#a6826e72c72575535c0d01fd552c29ac6">More...</a><br /></td></tr>
<tr class="separator:a6826e72c72575535c0d01fd552c29ac6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a875bc20035547a49b8bc3fa51d02bb85"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a875bc20035547a49b8bc3fa51d02bb85">T</a> = 0.033</td></tr>
<tr class="memdesc:a875bc20035547a49b8bc3fa51d02bb85"><td class="mdescLeft">&#160;</td><td class="mdescRight">Período mínimo entre cuadros, en segundos.  <a href="#a875bc20035547a49b8bc3fa51d02bb85">More...</a><br /></td></tr>
<tr class="separator:a875bc20035547a49b8bc3fa51d02bb85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0800c2a74e96b5763d20f0ce467b790"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#af0800c2a74e96b5763d20f0ce467b790">tiempo</a> = 0</td></tr>
<tr class="memdesc:af0800c2a74e96b5763d20f0ce467b790"><td class="mdescLeft">&#160;</td><td class="mdescRight">Posición del trackbar de tiempo de entrada, expresado en cuadros.  <a href="#af0800c2a74e96b5763d20f0ce467b790">More...</a><br /></td></tr>
<tr class="separator:af0800c2a74e96b5763d20f0ce467b790"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab1c7002d36bc59e061b3761ca33c249a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#ab1c7002d36bc59e061b3761ca33c249a">tiempoAlterado</a> = false</td></tr>
<tr class="memdesc:ab1c7002d36bc59e061b3761ca33c249a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Señal para main, indicando que el usuario cambió el tiempo con el trackbar.  <a href="#ab1c7002d36bc59e061b3761ca33c249a">More...</a><br /></td></tr>
<tr class="separator:ab1c7002d36bc59e061b3761ca33c249a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e08b723db61880cc2fe465e358e957d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a3e08b723db61880cc2fe465e358e957d">tiempoReversa</a> = false</td></tr>
<tr class="memdesc:a3e08b723db61880cc2fe465e358e957d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sentido de avance del tiempo.  <a href="#a3e08b723db61880cc2fe465e358e957d">More...</a><br /></td></tr>
<tr class="separator:a3e08b723db61880cc2fe465e358e957d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac390ea9ca316634285059efd5168d97c"><td class="memItemLeft" align="right" valign="top">cv::VideoCapture *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#ac390ea9ca316634285059efd5168d97c">video</a></td></tr>
<tr class="memdesc:ac390ea9ca316634285059efd5168d97c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flujo de entrada de video.  <a href="#ac390ea9ca316634285059efd5168d97c">More...</a><br /></td></tr>
<tr class="separator:ac390ea9ca316634285059efd5168d97c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a793c83b18167adbeebde82bc26c3e17f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a793c83b18167adbeebde82bc26c3e17f">videoPausado</a> = false</td></tr>
<tr class="memdesc:a793c83b18167adbeebde82bc26c3e17f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Control de pausa del video.  <a href="#a793c83b18167adbeebde82bc26c3e17f">More...</a><br /></td></tr>
<tr class="separator:a793c83b18167adbeebde82bc26c3e17f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:ad8085f7f51887cea273e0f6357137439"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#ad8085f7f51887cea273e0f6357137439">CheckFinish</a> ()</td></tr>
<tr class="separator:ad8085f7f51887cea273e0f6357137439"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6962b0695ea6c2164e9ce2b10de80a0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#aa6962b0695ea6c2164e9ce2b10de80a0">SetFinish</a> ()</td></tr>
<tr class="separator:aa6962b0695ea6c2164e9ce2b10de80a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf0704bc29f282192c5e5c36f66fa255"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#abf0704bc29f282192c5e5c36f66fa255">Stop</a> ()</td></tr>
<tr class="memdesc:abf0704bc29f282192c5e5c36f66fa255"><td class="mdescLeft">&#160;</td><td class="mdescRight">Método privado invocado exclusivamente en el bucle principal de <a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a68c269890714298034997be622f09947" title="Método principal de Viewer, que se ejecuta en un hilo propio. ">Viewer::Run</a>, para ejecutar una pausa si fue solicitada.  <a href="#abf0704bc29f282192c5e5c36f66fa255">More...</a><br /></td></tr>
<tr class="separator:abf0704bc29f282192c5e5c36f66fa255"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:ae7455c94e1109f9ecc8311583309390f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#ae7455c94e1109f9ecc8311583309390f">mbFinished</a></td></tr>
<tr class="separator:ae7455c94e1109f9ecc8311583309390f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f31947755c29030a8aa6dd59d13256c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a5f31947755c29030a8aa6dd59d13256c">mbFinishRequested</a></td></tr>
<tr class="separator:a5f31947755c29030a8aa6dd59d13256c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78d845b2b2e8d705686e88c8951296e7"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a78d845b2b2e8d705686e88c8951296e7">mbStopped</a></td></tr>
<tr class="memdesc:a78d845b2b2e8d705686e88c8951296e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Señal de que <a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html" title="Viewer representa la interfaz de usuario. ">Viewer</a> está parado.  <a href="#a78d845b2b2e8d705686e88c8951296e7">More...</a><br /></td></tr>
<tr class="separator:a78d845b2b2e8d705686e88c8951296e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f55ae2a631d2dae1a790bcfbb1779f5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a8f55ae2a631d2dae1a790bcfbb1779f5">mbStopRequested</a></td></tr>
<tr class="memdesc:a8f55ae2a631d2dae1a790bcfbb1779f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Señal de que se solicitó la parada del <a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html" title="Viewer representa la interfaz de usuario. ">Viewer</a>.  <a href="#a8f55ae2a631d2dae1a790bcfbb1779f5">More...</a><br /></td></tr>
<tr class="separator:a8f55ae2a631d2dae1a790bcfbb1779f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f3df677dcd9b1c323e11e763d08bad8"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a9f3df677dcd9b1c323e11e763d08bad8">mImageHeight</a></td></tr>
<tr class="separator:a9f3df677dcd9b1c323e11e763d08bad8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a90e1edcd45934303b8a968a77484dfa5"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a90e1edcd45934303b8a968a77484dfa5">mImageWidth</a></td></tr>
<tr class="separator:a90e1edcd45934303b8a968a77484dfa5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9633023902537fe1b320c289f6ae74fa"><td class="memItemLeft" align="right" valign="top">std::mutex&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a9633023902537fe1b320c289f6ae74fa">mMutexFinish</a></td></tr>
<tr class="separator:a9633023902537fe1b320c289f6ae74fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9da4631859d306fc77736cbd5a8169d8"><td class="memItemLeft" align="right" valign="top">std::mutex&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a9da4631859d306fc77736cbd5a8169d8">mMutexStop</a></td></tr>
<tr class="separator:a9da4631859d306fc77736cbd5a8169d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab73fa40df47dc6d5c289357e4ad1af9c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_frame_drawer.html">FrameDrawer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#ab73fa40df47dc6d5c289357e4ad1af9c">mpFrameDrawer</a></td></tr>
<tr class="memdesc:ab73fa40df47dc6d5c289357e4ad1af9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Única instancia de <a class="el" href="class_o_r_b___s_l_a_m2_1_1_frame_drawer.html" title="Clase de instancia única que se ocupa de mostrar la imagen de la cámara, con marcas verdes sobre los ...">FrameDrawer</a>, que se invoca sólo desde <a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html" title="Viewer representa la interfaz de usuario. ">Viewer</a>.  <a href="#ab73fa40df47dc6d5c289357e4ad1af9c">More...</a><br /></td></tr>
<tr class="separator:ab73fa40df47dc6d5c289357e4ad1af9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a924a16a3279742ec39c31dbe84b77291"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_drawer.html">MapDrawer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a924a16a3279742ec39c31dbe84b77291">mpMapDrawer</a></td></tr>
<tr class="memdesc:a924a16a3279742ec39c31dbe84b77291"><td class="mdescLeft">&#160;</td><td class="mdescRight">Única instancia de <a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_drawer.html" title="Esta clase contiene los métodos para dibujar en pangolin. ">MapDrawer</a>, que se invoca sólo desde <a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html" title="Viewer representa la interfaz de usuario. ">Viewer</a>.  <a href="#a924a16a3279742ec39c31dbe84b77291">More...</a><br /></td></tr>
<tr class="separator:a924a16a3279742ec39c31dbe84b77291"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaacd5e9192cde4d09b686fb35a618eb8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_system.html">System</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#aaacd5e9192cde4d09b686fb35a618eb8">mpSystem</a></td></tr>
<tr class="memdesc:aaacd5e9192cde4d09b686fb35a618eb8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sistema.  <a href="#aaacd5e9192cde4d09b686fb35a618eb8">More...</a><br /></td></tr>
<tr class="separator:aaacd5e9192cde4d09b686fb35a618eb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2090b65a559e20262c716b57f87cf8dd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_tracking.html">Tracking</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a2090b65a559e20262c716b57f87cf8dd">mpTracker</a></td></tr>
<tr class="memdesc:a2090b65a559e20262c716b57f87cf8dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tracker.  <a href="#a2090b65a559e20262c716b57f87cf8dd">More...</a><br /></td></tr>
<tr class="separator:a2090b65a559e20262c716b57f87cf8dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb85f4094a154172711b1acf9f36c209"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#adb85f4094a154172711b1acf9f36c209">mT</a></td></tr>
<tr class="separator:adb85f4094a154172711b1acf9f36c209"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada580026f9435541a53b408821a34e56"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#ada580026f9435541a53b408821a34e56">mViewpointF</a></td></tr>
<tr class="separator:ada580026f9435541a53b408821a34e56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30986dd20e162b6c064e6515486ae5f7"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a30986dd20e162b6c064e6515486ae5f7">mViewpointX</a></td></tr>
<tr class="separator:a30986dd20e162b6c064e6515486ae5f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f351e4be6077fa437a9fd59e3e179c3"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a3f351e4be6077fa437a9fd59e3e179c3">mViewpointY</a></td></tr>
<tr class="separator:a3f351e4be6077fa437a9fd59e3e179c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af73493d3e6c2d7664e8c0d7884d6a485"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#af73493d3e6c2d7664e8c0d7884d6a485">mViewpointZ</a></td></tr>
<tr class="separator:af73493d3e6c2d7664e8c0d7884d6a485"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html" title="Viewer representa la interfaz de usuario. ">Viewer</a> representa la interfaz de usuario. </p>
<p>Se compone de dos partes, implementadas en dos clases: <a class="el" href="class_o_r_b___s_l_a_m2_1_1_frame_drawer.html" title="Clase de instancia única que se ocupa de mostrar la imagen de la cámara, con marcas verdes sobre los ...">FrameDrawer</a> y <a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_drawer.html" title="Esta clase contiene los métodos para dibujar en pangolin. ">MapDrawer</a>, ambos singleton.</p>
<p><a class="el" href="class_o_r_b___s_l_a_m2_1_1_frame_drawer.html" title="Clase de instancia única que se ocupa de mostrar la imagen de la cámara, con marcas verdes sobre los ...">FrameDrawer</a> se encarga de generar la imagen procesada con los puntos del mapa y una barra de estado. <a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html" title="Viewer representa la interfaz de usuario. ">Viewer</a> la muestra con imshow.</p>
<p><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_drawer.html" title="Esta clase contiene los métodos para dibujar en pangolin. ">MapDrawer</a> se encarga de cargar en Pangolin los puntos 3D del mundo, las poses de los keyframes y de la cámara.</p>
<p>Estos dos objetos preparan lo que se muestra, la acción de llevarlo a a pantalla ocurre en <a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a68c269890714298034997be622f09947" title="Método principal de Viewer, que se ejecuta en un hilo propio. ">Viewer::Run</a> mediante:</p><ul>
<li>imshow</li>
<li>pangolin::FinishFrame</li>
</ul>
<p>Pausa: El proceso del visor se puede pausar desde otro hilo:</p><ul>
<li><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a4b23bbdcc2c5898d074870785a3e07c5" title="Solicita pausar. ">Viewer::RequestStop</a> para solicitar la pausa</li>
<li><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#aa1888ef340152348f395a814ddfb362f" title="Devuelve true si Viewer está pausado. ">Viewer::isStopped</a> para verificar si está pausado</li>
<li><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a2b0eeffd84b5d94a4c4f4e0db174c9fe" title="Solicita salir de una pausa y resumir la operación. ">Viewer::Release</a> para quitar la pausa y reanudar el proceso</li>
</ul>
<p>Durante la pausa el visor no se actualiza.</p>
<p>Terminación: El proceso se termina definitivamente para cerrar la aplicación con:</p><ul>
<li><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#af9079c4e563099cf3c8cda403c854cf8" title="Solicita terminar para cerrar la aplicación. ">Viewer::RequestFinish</a> para solicitar la terminación</li>
<li><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a51c55a1f1ad05a6ba2c6b57f9133f88d" title="Informa si Viewer ha terminado, paso previo para cerrar la aplicación. ">Viewer::isFinished</a> para confirmar que ha terminado </li>
</ul>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a4cb74123010b48fe47265e7b371229a5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ORB_SLAM2::Viewer::Viewer </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_system.html">System</a> *&#160;</td>
          <td class="paramname"><em>pSystem</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_frame_drawer.html">FrameDrawer</a> *&#160;</td>
          <td class="paramname"><em>pFrameDrawer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_drawer.html">MapDrawer</a> *&#160;</td>
          <td class="paramname"><em>pMapDrawer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_tracking.html">Tracking</a> *&#160;</td>
          <td class="paramname"><em>pTracking</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>strSettingPath</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">cv::VideoCapture *&#160;</td>
          <td class="paramname"> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Constructor único del singleton <a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html" title="Viewer representa la interfaz de usuario. ">Viewer</a>. </p>
<p>Se ocupa de la interfaz de usuario: presentación en pantalla y de procesar teclas y botones. Es el consumidor único de los singletons de <a class="el" href="class_o_r_b___s_l_a_m2_1_1_frame_drawer.html" title="Clase de instancia única que se ocupa de mostrar la imagen de la cámara, con marcas verdes sobre los ...">FrameDrawer</a> y <a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_drawer.html" title="Esta clase contiene los métodos para dibujar en pangolin. ">MapDrawer</a>. </p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ad8085f7f51887cea273e0f6357137439"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::Viewer::CheckFinish </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a51c55a1f1ad05a6ba2c6b57f9133f88d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::Viewer::isFinished </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Informa si <a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html" title="Viewer representa la interfaz de usuario. ">Viewer</a> ha terminado, paso previo para cerrar la aplicación. </p>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#ae7455c94e1109f9ecc8311583309390f">Viewer::mbFinished</a>: true si se está en proceso de terminación. </dd></dl>

</div>
</div>
<a id="aa1888ef340152348f395a814ddfb362f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::Viewer::isStopped </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Devuelve true si <a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html" title="Viewer representa la interfaz de usuario. ">Viewer</a> está pausado. </p>
<p>Se consulta repetidamente luego de haber solicitado la parada con RequesStop.</p>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a78d845b2b2e8d705686e88c8951296e7" title="Señal de que Viewer está parado. ">Viewer::mbStopped</a>, que es true si <a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a68c269890714298034997be622f09947" title="Método principal de Viewer, que se ejecuta en un hilo propio. ">Viewer::Run</a> ya está en el bucle de pausa. </dd></dl>

</div>
</div>
<a id="a2b0eeffd84b5d94a4c4f4e0db174c9fe"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::Viewer::Release </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Solicita salir de una pausa y resumir la operación. </p>
<p>Invocado por otro hilo, luego de haber solictado para con RequestStop. </p>

</div>
</div>
<a id="af9079c4e563099cf3c8cda403c854cf8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::Viewer::RequestFinish </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Solicita terminar para cerrar la aplicación. </p>
<p>Invocado por otro hilo. </p>

</div>
</div>
<a id="a4b23bbdcc2c5898d074870785a3e07c5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::Viewer::RequestStop </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Solicita pausar. </p>
<p>Invocado asincrónicamente por otro hilo, que deberá consultar isStopped para confirmar que <a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html" title="Viewer representa la interfaz de usuario. ">Viewer</a> se detuvo. <a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html" title="Viewer representa la interfaz de usuario. ">Viewer</a> pausa en el bucle de Run, y reanuda luego de que otro hilo invoque Release. </p>

</div>
</div>
<a id="a68c269890714298034997be622f09947"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::Viewer::Run </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Método principal de <a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html" title="Viewer representa la interfaz de usuario. ">Viewer</a>, que se ejecuta en un hilo propio. </p>
<p>Run entra en un bucle sin fin, del que sale solamente cuando se le solicita terminar con RequestFinish. En este bucle se procesan teclazos y botones de Pangolin, y se presentan en pantalla las imágenes y el mapa. </p>

</div>
</div>
<a id="aa6962b0695ea6c2164e9ce2b10de80a0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::Viewer::SetFinish </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="abf0704bc29f282192c5e5c36f66fa255"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::Viewer::Stop </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Método privado invocado exclusivamente en el bucle principal de <a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a68c269890714298034997be622f09947" title="Método principal de Viewer, que se ejecuta en un hilo propio. ">Viewer::Run</a>, para ejecutar una pausa si fue solicitada. </p>
<dl class="section return"><dt>Returns</dt><dd>true si el hilo debe detenerse, false si no.</dd></dl>
<p>El bucle principal de Run invoca Stop y si devuelve true detiene el hilo mientras <a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#aa1888ef340152348f395a814ddfb362f" title="Devuelve true si Viewer está pausado. ">isStopped()</a> sera true. </p>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a4f6ee522d15ea19986f1625007ef08cb"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::Viewer::cargarMapa = false</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Señal para que main cargue en mapa en el thread de <a class="el" href="class_o_r_b___s_l_a_m2_1_1_system.html" title="System se instancia una única vez en main, en la variable SLAM. ">System</a> y <a class="el" href="class_o_r_b___s_l_a_m2_1_1_tracking.html" title="Objeto único que se ejecuta en su propio Trhead, y se inicia con Run(). ">Tracking</a>. </p>

</div>
</div>
<a id="a17167841bf5fbad4c9dad01fe4f5bc9b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ORB_SLAM2::Viewer::duracion</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Duración del archivo de video de entrada, expresado en cuadros. </p>
<p>0 si no la entrada no es de un archivo. Definido en el constructor de viewer. </p>

</div>
</div>
<a id="ab26f78e86d98cab4eb5af208bda89435"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::Viewer::guardarMapa = false</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Señal para que main guarde el mapa en el thread de <a class="el" href="class_o_r_b___s_l_a_m2_1_1_system.html" title="System se instancia una única vez en main, en la variable SLAM. ">System</a> y <a class="el" href="class_o_r_b___s_l_a_m2_1_1_tracking.html" title="Objeto único que se ejecuta en su propio Trhead, y se inicia con Run(). ">Tracking</a>. </p>

</div>
</div>
<a id="ae7455c94e1109f9ecc8311583309390f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::Viewer::mbFinished</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a5f31947755c29030a8aa6dd59d13256c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::Viewer::mbFinishRequested</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a78d845b2b2e8d705686e88c8951296e7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::Viewer::mbStopped</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Señal de que <a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html" title="Viewer representa la interfaz de usuario. ">Viewer</a> está parado. </p>
<p>Pero no se lee en ninguna parte del código: no se usa. </p>

</div>
</div>
<a id="a8f55ae2a631d2dae1a790bcfbb1779f5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::Viewer::mbStopRequested</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Señal de que se solicitó la parada del <a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html" title="Viewer representa la interfaz de usuario. ">Viewer</a>. </p>
<p>Cuando pueda parará, y marcará mbStopped </p>

</div>
</div>
<a id="a9f3df677dcd9b1c323e11e763d08bad8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">float ORB_SLAM2::Viewer::mImageHeight</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a90e1edcd45934303b8a968a77484dfa5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">float ORB_SLAM2::Viewer::mImageWidth</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a9633023902537fe1b320c289f6ae74fa"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::mutex ORB_SLAM2::Viewer::mMutexFinish</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a9da4631859d306fc77736cbd5a8169d8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::mutex ORB_SLAM2::Viewer::mMutexStop</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a73f09c3764dd6d9151ce2134a7c07180"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::Viewer::modoAutomatico = false</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Modo automatico que pasa a resversa cuando se pierde. </p>
<p>Controlado por el usuario. </p>

</div>
</div>
<a id="a11a0333b735379526a324a76d5e6fbc4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::Viewer::mostrarEntradaAntidistorsionada = true</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Señal que alterna mostrando la imagen de entrada como viene o antidistorsionada. </p>

</div>
</div>
<a id="ab73fa40df47dc6d5c289357e4ad1af9c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_frame_drawer.html">FrameDrawer</a>* ORB_SLAM2::Viewer::mpFrameDrawer</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Única instancia de <a class="el" href="class_o_r_b___s_l_a_m2_1_1_frame_drawer.html" title="Clase de instancia única que se ocupa de mostrar la imagen de la cámara, con marcas verdes sobre los ...">FrameDrawer</a>, que se invoca sólo desde <a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html" title="Viewer representa la interfaz de usuario. ">Viewer</a>. </p>

</div>
</div>
<a id="a924a16a3279742ec39c31dbe84b77291"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_drawer.html">MapDrawer</a>* ORB_SLAM2::Viewer::mpMapDrawer</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Única instancia de <a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_drawer.html" title="Esta clase contiene los métodos para dibujar en pangolin. ">MapDrawer</a>, que se invoca sólo desde <a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html" title="Viewer representa la interfaz de usuario. ">Viewer</a>. </p>

</div>
</div>
<a id="aaacd5e9192cde4d09b686fb35a618eb8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_system.html">System</a>* ORB_SLAM2::Viewer::mpSystem</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Sistema. </p>

</div>
</div>
<a id="a2090b65a559e20262c716b57f87cf8dd"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_tracking.html">Tracking</a>* ORB_SLAM2::Viewer::mpTracker</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Tracker. </p>

</div>
</div>
<a id="adb85f4094a154172711b1acf9f36c209"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ORB_SLAM2::Viewer::mT</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ada580026f9435541a53b408821a34e56"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">float ORB_SLAM2::Viewer::mViewpointF</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a30986dd20e162b6c064e6515486ae5f7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">float ORB_SLAM2::Viewer::mViewpointX</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a3f351e4be6077fa437a9fd59e3e179c3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">float ORB_SLAM2::Viewer::mViewpointY</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="af73493d3e6c2d7664e8c0d7884d6a485"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">float ORB_SLAM2::Viewer::mViewpointZ</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a6826e72c72575535c0d01fd552c29ac6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::Viewer::sentidoModoAutomatico = false</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Variable interna que indica el sentido del video cuando actúa la corrección automática. </p>
<p>false es normal para adelante, perdido reversa. true es lo contrario. </p>

</div>
</div>
<a id="a875bc20035547a49b8bc3fa51d02bb85"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">float ORB_SLAM2::Viewer::T = 0.033</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Período mínimo entre cuadros, en segundos. </p>
<p>El bucle main se asegura de demorar como mínimo este tiempo entre dos cuadros. El usuario ajusta este valor. </p>

</div>
</div>
<a id="af0800c2a74e96b5763d20f0ce467b790"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ORB_SLAM2::Viewer::tiempo = 0</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Posición del trackbar de tiempo de entrada, expresado en cuadros. </p>
<p>Eco de la posición del trackbar. Sólo se usa cuando la entrada es archivo de video. </p>

</div>
</div>
<a id="ab1c7002d36bc59e061b3761ca33c249a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::Viewer::tiempoAlterado = false</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Señal para main, indicando que el usuario cambió el tiempo con el trackbar. </p>
<p><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html#a68c269890714298034997be622f09947" title="Método principal de Viewer, que se ejecuta en un hilo propio. ">Viewer.Run</a> la levanta, y main la baja. </p>

</div>
</div>
<a id="a3e08b723db61880cc2fe465e358e957d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::Viewer::tiempoReversa = false</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sentido de avance del tiempo. </p>
<p>false para adelante, true para reversa. </p>

</div>
</div>
<a id="ac390ea9ca316634285059efd5168d97c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">cv::VideoCapture* ORB_SLAM2::Viewer::video</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Flujo de entrada de video. </p>
<p>NULL si no proviene de un archivo. Usado para manipular el tiempo con un trackbar. Definido en el constructor. </p>

</div>
</div>
<a id="a793c83b18167adbeebde82bc26c3e17f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::Viewer::videoPausado = false</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Control de pausa del video. </p>
<p>Es leído desde el bucle principal de main. </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>/home/alejandro/Desarrollo eclipse/os1/include/<a class="el" href="_viewer_8h_source.html">Viewer.h</a></li>
<li>/home/alejandro/Desarrollo eclipse/os1/src/<a class="el" href="_viewer_8cc.html">Viewer.cc</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespace_o_r_b___s_l_a_m2.html">ORB_SLAM2</a></li><li class="navelem"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_viewer.html">Viewer</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.12 </li>
  </ul>
</div>
</body>
</html>
